#ifndef FRIENDLISTPAGE_H
#define FRIENDLISTPAGE_H

#include <QWidget>
#include <QListWidget>
#include <QPushButton>

namespace Ui {
class FriendListPage;
}

/**
 * @brief 好友列表页面类，展示和管理好友列表
 */
class FriendListPage : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数，初始化好友列表页面
     * @param parent 父窗口指针
     */
    explicit FriendListPage(QWidget *parent = nullptr);

    /**
     * @brief 析构函数，释放资源
     */
    ~FriendListPage();

    /**
     * @brief 加载好友列表数据
     * @param friendIds 好友ID列表
     * @param friendNames 好友名称列表
     * @param friendAges 好友年龄列表
     */
    void loadFriendList(const QStringList &friendIds, const QStringList &friendNames, const QList<int> &friendAges);

signals:
    /**
     * @brief 跳转添加好友页面信号
     */
    void toAddFriendPage();

    /**
     * @brief 跳转好友申请页面信号
     */
    void toFriendRequestPage();

    /**
     * @brief 跳转好友详情页面信号
     * @param friendId 好友ID
     */
    void toFriendDetailPage(const QString &friendId);

    /**
     * @brief 跳转个人资料页面信号
     */
    void toPersonalProfile();

    /**
     * @brief 跳转群聊列表页面信号
     */
    void toGroupListPage();

private slots:
    /**
     * @brief 添加好友按钮点击事件处理
     */
    void onAddFriendClicked();

    /**
     * @brief 好友申请按钮点击事件处理
     */
    void onRequestClicked();

    /**
     * @brief 好友列表项点击事件处理
     */
    void onFriendItemClicked();

    /**
     * @brief 个人资料按钮点击事件处理
     */
    void onProfileClicked();

    /**
     * @brief 群聊按钮点击事件处理
     */
    void onGroupClicked();

private:
    Ui::FriendListPage *ui;           ///< UI对象指针
    QListWidget *m_friendList;        ///< 好友列表控件
    QPushButton *m_addBtn;            ///< 添加好友按钮
    QPushButton *m_requestBtn;        ///< 好友申请按钮
    QPushButton *m_profileBtn;        ///< 个人资料按钮
    QPushButton *m_groupBtn;          ///< 群聊按钮

    /**
     * @brief 初始化UI组件
     */
    void initUI();
};

#endif // FRIENDLISTPAGE_H
